//
//  RequestGenerator.h
//  YiJuZhangShou
//
//  Created by 冷悦 on 16/3/3.
//  Copyright © 2016年 Uranus. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface RequestGenerator : NSObject

/**
 *  初始化函数
 *
 *  @return 返回单例
 */
+ (instancetype)sharedInstance;

/**
 *  产生restful 请求api
 *
 *  @param baseUrl    网址
 *  @param apiVersion api版本
 *  @param apiName    请求使用的具体api
 *
 *  @return restful api url
 */
- (NSString *)generateApiUrl:(NSString *)baseUrl
              withApiVersion:(NSString *)apiVersion
                  andName:(NSString *)Name;

/**
 *  产生restful 默认参数的api
 *
 *  @param name api名字
 *
 *  @return 请求使用的具体api
 */
- (NSString *)generateCommonApiWithName:(NSString *)name;

/**
 *  添加正在处理的请求
 *
 *  @param 具体的请求url＋方法＋params
 */
- (void)addProcessingRequest:(NSString *)requestId;

/**
 *  当请求处理完成之后，从数组中删除requestId
 *
 *  @param requestId 具体的请求url＋方法＋params
 */
- (void)deleteProcessingRequest:(NSString *)requestId;

/**
 *  当前请求是否正在处理中
 *
 *  @param requestId 具体的请求url＋方法＋params
 *
 *  @return 是否在处理
 */
- (BOOL)isRequestOnProcessing:(NSString *)requestId;

/**
 *  当前请求是否有缓存
 *
 *  @param requestId 具体的请求url＋方法＋params
 *
 *  @return 是否有缓存
 */
- (BOOL)isRequestCached:(NSString *)requestId;

/**
 *  缓存处理结果
 *
 *  @param responseParam 返回的网络数据
 *  @param requestId     具体的请求url＋方法＋params
 *  @param cacheTime     缓存的时间
 */
- (void)cacheResponseResult:(NSDictionary *)responseParam
              withRequestId:(NSString *)requestId
               AndCacheTime:(NSTimeInterval)cacheTime;

- (NSString *)generateRequestId:(NSDictionary *)params
                    requestType:(RequestType)requestType
                     andAPIName:(NSString *)apiName;

@end
